package com.hliushi.learn.controller;

import com.hliushi.learn.bean.User;
import com.hliushi.learn.response.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

/**
 * @ClassName MySwaggerController
 * @Description TODO
 * @Author hliushi
 * @Date 2021/7/6 20:19
 * @Version V1.0
 **/
@RestController
@RequestMapping("/swagger")
@Api(value = "Swagger2 在线接口文档")
public class MySwaggerController {

    /**
     * bug点, 好像不能使用 Swagger2Controller作为 Controller名称
     * 与和这个类同名了 springfox.documentation.swagger2.web.Swagger2Controller
     */

    /**
     * 根据用户唯一表示获取用户信息
     * #
     * Api注解用在类上, 表示标识这个类是swagger的资源
     * ApiOperation注解用于方法, 表示一个http请求的操作
     * ApiParam注解用于参数上, 用来标明参数信息
     *
     * @param id 用户id
     * @return
     */
    @GetMapping("/get/{id}")
    @ApiOperation(value = "根据用户唯一表示获取用户信息")
    public JsonResult<Object> getUserInfo(@PathVariable @ApiParam(value = "用户唯一标识") Long id) {

        // 模拟数据中根据id获取User信息
        User user = new User(id, "hliushi", "qwer1234");

        if (user != null) {
            return new JsonResult<>(user);
        } else {
            return new JsonResult<>(99999, "数据库中没有对应的id");
        }
    }

    /**
     * @param
     * @return
     */
    @PostMapping("/insert")
    @ApiOperation("添加用户信息")
    public JsonResult<Void> insertUser(@RequestBody @ApiParam("用户信息") User user) {

        // 处理添加逻辑
        return new JsonResult<>();
    }
}
